import config from '@/config/index.js';

// 请求拦截器
const requestInterceptor = (options) => {
    // 可以在这里添加请求头，如 token
    const token = uni.getStorageSync('userInfo').token;
    if (token) {
        options.header = {
            ...options.header,
            Authorization: `Bearer ${token}`
        };
    }
    return options;
};

// 响应拦截器
const responseInterceptor = (res) => {
    // 可以在这里统一处理响应，如状态码判断
    if (res.statusCode === 200) {
        return Promise.resolve(res.data);
    } else if (res.statusCode === 401) {
        // 处理未授权的情况，如跳转到登录页
        uni.reLaunch({
            url: '/pages/login/login'
        });
        return Promise.reject(new Error('未授权，请重新登录'));
    } else {
        return Promise.reject(new Error(`请求失败，状态码：${res.statusCode}`));
    }
};

// 封装请求方法
const request = (options) => {
    console.log(uni.getStorageSync('userInfo').token)
    // 执行请求拦截器
    options = requestInterceptor(options);

    return new Promise((resolve, reject) => {
        uni.request({
            url: config.baseUrl + options.url,
            method: options.method || 'GET',
            data: options.data || {},
            header: {
                'Content-Type': 'application/json',
                token: uni.getStorageSync('userInfo').token,
                id: uni.getStorageSync('userInfo').id,
                ...options.header
            },
            timeout: options.timeout || config.timeout,
            success: (res) => {
                // 执行响应拦截器
                responseInterceptor(res)
                    .then((data) => {
                        resolve(data);
                    })
                    .catch((err) => {
                        reject(err);
                    });
            },
            fail: (err) => {
                reject(err);
            }
        });
    });
};

export default request;